sqlite

推荐列表 站点导航

当前位置:首页 > 数据库 > sqlite >

JRDBsqlite使用详解

来源:网络整理  作者:网友投稿  发布时间:2020-12-29 08:01
最近需要使用到数据库发现了JRDB研究了下做个小笔记以备自己以后使用JRDB使用分类的模式,模仿Hibernate,对FMDB进行...

最近需要使用到数据库 发现了 JRDB 研究了下 做个小笔记 以备自己以后使用

JRDB
使用分类的模式,模仿Hibernate,对FMDB进行简易封装
支持pod 安装 『pod ‘JRDB’』,Podfile需要添加 use_framework!
使用协议,不用继承基类,对任意NSObject可以进行入库操作
支持swift 和 Objective-C
支持数据类型:基本数据类型(int,double,等),String,NSData,NSNumber,NSDate
注:swift的基本数据类型,不支持Option类型,既不支持Int?Int!等,对象类型支持Option类型
Installation 【安装】

pod ‘JRDB’

1基本的应用 请参考 https://github.com/scubers/JRDB

2 刚开始使用的时候 第一个问题就来了 就是一个model 不能多次保存到表里 这个让我找了很久 后来去问了前辈 知道了怎么设置

Person *p = [self createPerson:1 name:nil]; for (int i = 0; i < 10; i++) { [p.money addObject:[self createMoney:i]]; } for (NSInteger i=0; i < 10; i++ ) { [p jr_saveWithComplete:^(BOOL success) { //这一步很重要 设置关联的ID为nil 就可以保存 [p setID:nil]; }]; }

3 主要的实现方法都在 NSObject+JRDB.h文件

// // NSObject+JRDB.h // JRDB // // Created by JMacMini on 16/5/10. // Copyright © 2016年 Jrwong. All rights reserved. // #import <Foundation/Foundation.h> #import 'JRPersistent.h' #import 'JRQueryCondition.h' #define JR_DEFAULTDB [JRDBMgr defaultDB] @class FMDatabase; @interface NSObject (JRDB) <JRPersistent> /** * 注册的时候自动调用, 每个注册类有且只执行一次; */ + (void)jr_configure; #pragma mark - convinence method - (void)jr_setSingleLinkID:(NSString * _Nullable)ID forKey:(NSString * _Nonnull)key; - (NSString * _Nullable)jr_singleLinkIDforKey:(NSString * _Nonnull)key; - (void)jr_setParentLinkID:(NSString * _Nullable)ID forKey:(NSString * _Nonnull)key; - (NSString * _Nullable)jr_parentLinkIDforKey:(NSString * _Nonnull)key; - (NSMutableDictionary<NSString *,JRDBDidFinishBlock> * _Nonnull)jr_finishBlocks; #pragma mark - save or update - (BOOL)jr_saveOrUpdateOnlyToDB:(FMDatabase * _Nonnull)db; /** * 保存或更新自身到db, 并进行关联保存删除更新 * * @param db * @param useTransaction 若外层有事务,请用NO,若没有,请用YES * @complete 完成block */ - (BOOL)jr_saveOrUpdateUseTransaction:(BOOL)useTransaction toDB:(FMDatabase * _Nonnull)db; - (void)jr_saveOrUpdateUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; - (BOOL)jr_saveOrUpdateToDB:(FMDatabase * _Nonnull)db; - (void)jr_saveOrUpdateWithComplete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; #pragma mark - save or update use DefaultDB //保存或更新 默认数据库 - (BOOL)jr_saveOrUpdateUseTransaction:(BOOL)useTransaction; - (void)jr_saveOrUpdateUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete; - (BOOL)jr_saveOrUpdate; - (void)jr_saveOrUpdateWithComplete:(JRDBComplete _Nullable)complete; #pragma mark - save /** * 仅保存自身,不进行关联保存(不建议使用) * * @param db */ - (BOOL)jr_saveOnlyToDB:(FMDatabase * _Nonnull)db; /** * 保存自身到db, 并进行关联保存删除更新 * * @param db * @param useTransaction 若外层有事务,请用NO,若没有,请用YES */ - (BOOL)jr_saveUseTransaction:(BOOL)useTransaction toDB:(FMDatabase * _Nonnull)db; - (void)jr_saveUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; - (BOOL)jr_saveToDB:(FMDatabase * _Nonnull)db; - (void)jr_saveWithComplete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; #pragma mark - save use DefaultDB /** * 仅保存自身,不进行关联保存(不建议使用):使用默认数据库 */ - (BOOL)jr_saveOnly; /** * 保存自身到db, 并进行关联保存删除更新 :使用默认数据库 * * @param useTransaction 若外层有事务,请用NO,若没有,请用YES */ - (BOOL)jr_saveUseTransaction:(BOOL)useTransaction; - (void)jr_saveUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete; - (BOOL)jr_save; - (void)jr_saveWithComplete:(JRDBComplete _Nullable)complete; #pragma mark - update /** * 仅更新自身,不进行关联保存(不建议使用) * * @param db * @param columns 要更新的字段 */ - (BOOL)jr_updateOnlyColumns:(NSArray<NSString *> * _Nullable)columns toDB:(FMDatabase * _Nonnull)db; /** * 更新自身到db, 并进行关联保存删除更新 * * @param db * @param columns 要更新的字段 * @param useTransaction 若外层有事务,请用NO,若没有,请用YES */ - (BOOL)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns useTransaction:(BOOL)useTransaction toDB:(FMDatabase * _Nonnull)db; - (void)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns useTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; - (BOOL)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns toDB:(FMDatabase * _Nonnull)db; - (void)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns complete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; #pragma mark - update use DefaultDB /** * 仅更新自身,不进行关联保存(不建议使用) * * @param columns 要更新的字段 */ - (BOOL)jr_updateOnlyColumns:(NSArray<NSString *> * _Nullable)columns; /** * 更新自身到db, 并进行关联保存删除更新 * * @param columns 要更新的字段 * @param useTransaction 若外层有事务,请用NO,若没有,请用YES * @complete 完成block */ - (BOOL)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns useTransaction:(BOOL)useTransaction; - (void)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns useTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete; - (BOOL)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns; - (void)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns complete:(JRDBComplete _Nullable)complete; #pragma mark - delete + (BOOL)jr_deleteAllOnlyFromDB:(FMDatabase * _Nonnull)db; /** * 仅删除自身,不进行关联保存(不建议使用) * * @param db */ - (BOOL)jr_deleteOnlyFromDB:(FMDatabase * _Nonnull)db; /** * 删除自身, 并进行关联保存删除更新 * * @param db * @param useTransaction 若外层有事务,请用NO,若没有,请用YES */ - (BOOL)jr_deleteUseTransaction:(BOOL)useTransaction fromDB:(FMDatabase * _Nonnull)db; - (void)jr_deleteUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete fromDB:(FMDatabase * _Nonnull)db; - (BOOL)jr_deleteFromDB:(FMDatabase * _Nonnull)db; - (void)jr_deleteWithComplete:(JRDBComplete _Nullable)complete fromDB:(FMDatabase * _Nonnull)db; #pragma mark - delete use DefaultDB + (BOOL)jr_deleteAllOnly; /** * 仅删除自身,不进行关联保存(不建议使用) */ - (BOOL)jr_deleteOnly; /** * 删除自身, 并进行关联保存删除更新 * * @param useTransaction 若外层有事务,请用NO,若没有,请用YES */ - (BOOL)jr_deleteUseTransaction:(BOOL)useTransaction; - (void)jr_deleteUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete; - (BOOL)jr_delete; - (void)jr_deleteWithComplete:(JRDBComplete _Nullable)complete; #pragma mark - select /** * 根据ID查找 * * @param ID */ + (instancetype _Nullable)jr_findByID:(NSString * _Nonnull)ID; + (instancetype _Nullable)jr_findByID:(NSString * _Nonnull)ID fromDB:(FMDatabase * _Nonnull)db; /** * 根据主键查找 * @param primaryKey 主键 */ + (instancetype _Nullable)jr_findByPrimaryKey:(id _Nonnull)primaryKey; + (instancetype _Nullable)jr_findByPrimaryKey:(id _Nonnull)primaryKey fromDB:(FMDatabase * _Nonnull)db; /** * @OrderBy 顺序 订单 * @isDesc 描述 * */ + (NSArray<id<JRPersistent>> * _Nonnull)jr_findAll; + (NSArray<id<JRPersistent>> * _Nonnull)jr_findAllFromDB:(FMDatabase * _Nonnull)db; + (NSArray<id<JRPersistent>> * _Nonnull)jr_findAllOrderBy:(NSString * _Nullable)orderBy isDesc:(BOOL)isDesc; //降序返回 + (NSArray<id<JRPersistent>> * _Nonnull)jr_findAllFromDB:(FMDatabase * _Nonnull)db orderBy:(NSString * _Nullable)orderBy isDesc:(BOOL)isDesc; /** * @param conditions 查找条件 * @param groupBy 组 * @param orderBy 顺序 * @param limit 限制 * @param isDesc 描述 * @param db */ + (NSArray<id<JRPersistent>> * _Nonnull)jr_findByConditions:(NSArray<JRQueryCondition *> * _Nullable)conditions groupBy:(NSString * _Nullable)groupBy orderBy:(NSString * _Nullable)orderBy limit:(NSString * _Nullable)limit isDesc:(BOOL)isDesc fromDB:(FMDatabase * _Nullable)db; + (NSArray<id<JRPersistent>> * _Nonnull)jr_findByConditions:(NSArray<JRQueryCondition *> * _Nullable)conditions groupBy:(NSString * _Nullable)groupBy orderBy:(NSString * _Nullable)orderBy limit:(NSString * _Nullable)limit isDesc:(BOOL)isDesc; #pragma mark - table message /** * 数据库中的当前列 获取表格字段 * * @param db * */ + (NSArray<NSString *> * _Nonnull)jr_currentColumnsInDB:(FMDatabase * _Nonnull)db; + (NSArray<NSString *> * _Nonnull)jr_currentColumns; //=============================重点================================== #pragma mark - sql语句 /** * 因为直接返回对象,所以sql 请以 select * 开头 * * @param sql sql: select * from Person where _ID = ? * @param args 参数 @[@'111'] * * @return 返回数组 */ + (NSArray<id<JRPersistent>> * _Nonnull)jr_executeSql:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args; + (NSArray<id<JRPersistent>> * _Nonnull)jr_executeSql:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args fromDB:(FMDatabase * _Nonnull)db; /** * 返回条数 * * @param sql select count(1) where age > ? * @param args @[@10] * * @return 数据条数 */ + (NSUInteger)jr_countForSql:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args; + (NSUInteger)jr_countForSql:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args fromDB:(FMDatabase * _Nonnull)db; + (BOOL)jr_executeUpdate:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args; + (BOOL)jr_executeUpdate:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args fromDB:(FMDatabase * _Nonnull)db; #pragma mark - table operation + (BOOL)jr_createTable; + (BOOL)jr_createTableInDB:(FMDatabase * _Nonnull)db; + (BOOL)jr_updateTable; + (BOOL)jr_updateTableInDB:(FMDatabase * _Nonnull)db; + (BOOL)jr_dropTable; + (BOOL)jr_dropTableInDB:(FMDatabase * _Nonnull)db; + (BOOL)jr_truncateTable; + (BOOL)jr_truncateTableInDB:(FMDatabase * _Nonnull)db; #pragma mark - hooking + (void)jr_swizzleSetters4Clazz; - (NSMutableArray * _Nullable)jr_changedArray; @end

4 后面是实践的一些小模块

常用的两个保存方式

[p1 jr_saveWithComplete:^(BOOL success) { [p jr_save];//保存成功再调用 }];

常用的查找方式

Person *p = [Person jr_findAll].firstObject; //主键查找 Person *p = [Person jr_findByPrimaryKey:@'111']; NSArray *list = [Person jr_findAll]; // 根据字段 排序 获取数据 获取的数据为降序排布 NSArray *list1 = [Person jr_findAllOrderBy:@'_a_int' isDesc:YES]; // sql 语句查询 这里 age 为你需要设置的条件的值 ?占位符 NSString *sql = @'select * from Person where _a_int > ?'; NSArray *list = [Person jr_executeSql:sql args:@[@4]]; // 获取表格字段 全部信息 NSArray * currentarray = [Person jr_currentColumns];

常用的跟新的方法

1 Person *p = [Person jr_findAll].firstObject; p.name = @'我跟新了name'; [p jr_updateColumns:nil]; 2 // 需要更新的字段 只更新表里_name 字段 for (Person * tmp in array) { i++; if (tmp.name.length >0) { tmp.name = [NSString stringWithFormat:@'我勒个去啊name%ld',i]; tmp.i_string = [NSString stringWithFormat:@'我勒个去i_string%ld',i]; [tmp jr_updateColumns:@[@'_name'] toDB:db]; } } //更新表里_a_int _i_string 字段 注意需要加上_ int i =0; NSArray * array = [Person jr_findAll]; for (Person * tmp in array) { i++; tmp.name = @'iOS'; tmp.i_string = @'我爱你'; tmp.a_int = i; } NSLog(@'%@', array); [array jr_updateColumns:@[@'_a_int',@'_i_string'] complete:^(BOOL success) { NSLog(@'真的执行正确了加油 加油'); } toDB:db];

常用的表格删除方法

[Person jr_dropTable]; [HelpListModel jr_dropTable]; [Money jr_dropTable]; [Card jr_dropTable]; [JRFMDBBookModel jr_dropTable]; [Modeltest jr_dropTable];

写的有点乱 后续整理后 再更新 。。。。。。。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/sqlite/10596.shtml

相关文章
Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

JRDBsqlite使用详解

2020-12-29 编辑:网友投稿

最近需要使用到数据库 发现了 JRDB 研究了下 做个小笔记 以备自己以后使用

JRDB
使用分类的模式,模仿Hibernate,对FMDB进行简易封装
支持pod 安装 『pod ‘JRDB’』,Podfile需要添加 use_framework!
使用协议,不用继承基类,对任意NSObject可以进行入库操作
支持swift 和 Objective-C
支持数据类型:基本数据类型(int,double,等),String,NSData,NSNumber,NSDate
注:swift的基本数据类型,不支持Option类型,既不支持Int?Int!等,对象类型支持Option类型
Installation 【安装】

pod ‘JRDB’

1基本的应用 请参考 https://github.com/scubers/JRDB

2 刚开始使用的时候 第一个问题就来了 就是一个model 不能多次保存到表里 这个让我找了很久 后来去问了前辈 知道了怎么设置

Person *p = [self createPerson:1 name:nil]; for (int i = 0; i < 10; i++) { [p.money addObject:[self createMoney:i]]; } for (NSInteger i=0; i < 10; i++ ) { [p jr_saveWithComplete:^(BOOL success) { //这一步很重要 设置关联的ID为nil 就可以保存 [p setID:nil]; }]; }

3 主要的实现方法都在 NSObject+JRDB.h文件

// // NSObject+JRDB.h // JRDB // // Created by JMacMini on 16/5/10. // Copyright © 2016年 Jrwong. All rights reserved. // #import <Foundation/Foundation.h> #import 'JRPersistent.h' #import 'JRQueryCondition.h' #define JR_DEFAULTDB [JRDBMgr defaultDB] @class FMDatabase; @interface NSObject (JRDB) <JRPersistent> /** * 注册的时候自动调用, 每个注册类有且只执行一次; */ + (void)jr_configure; #pragma mark - convinence method - (void)jr_setSingleLinkID:(NSString * _Nullable)ID forKey:(NSString * _Nonnull)key; - (NSString * _Nullable)jr_singleLinkIDforKey:(NSString * _Nonnull)key; - (void)jr_setParentLinkID:(NSString * _Nullable)ID forKey:(NSString * _Nonnull)key; - (NSString * _Nullable)jr_parentLinkIDforKey:(NSString * _Nonnull)key; - (NSMutableDictionary<NSString *,JRDBDidFinishBlock> * _Nonnull)jr_finishBlocks; #pragma mark - save or update - (BOOL)jr_saveOrUpdateOnlyToDB:(FMDatabase * _Nonnull)db; /** * 保存或更新自身到db, 并进行关联保存删除更新 * * @param db * @param useTransaction 若外层有事务,请用NO,若没有,请用YES * @complete 完成block */ - (BOOL)jr_saveOrUpdateUseTransaction:(BOOL)useTransaction toDB:(FMDatabase * _Nonnull)db; - (void)jr_saveOrUpdateUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; - (BOOL)jr_saveOrUpdateToDB:(FMDatabase * _Nonnull)db; - (void)jr_saveOrUpdateWithComplete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; #pragma mark - save or update use DefaultDB //保存或更新 默认数据库 - (BOOL)jr_saveOrUpdateUseTransaction:(BOOL)useTransaction; - (void)jr_saveOrUpdateUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete; - (BOOL)jr_saveOrUpdate; - (void)jr_saveOrUpdateWithComplete:(JRDBComplete _Nullable)complete; #pragma mark - save /** * 仅保存自身,不进行关联保存(不建议使用) * * @param db */ - (BOOL)jr_saveOnlyToDB:(FMDatabase * _Nonnull)db; /** * 保存自身到db, 并进行关联保存删除更新 * * @param db * @param useTransaction 若外层有事务,请用NO,若没有,请用YES */ - (BOOL)jr_saveUseTransaction:(BOOL)useTransaction toDB:(FMDatabase * _Nonnull)db; - (void)jr_saveUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; - (BOOL)jr_saveToDB:(FMDatabase * _Nonnull)db; - (void)jr_saveWithComplete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; #pragma mark - save use DefaultDB /** * 仅保存自身,不进行关联保存(不建议使用):使用默认数据库 */ - (BOOL)jr_saveOnly; /** * 保存自身到db, 并进行关联保存删除更新 :使用默认数据库 * * @param useTransaction 若外层有事务,请用NO,若没有,请用YES */ - (BOOL)jr_saveUseTransaction:(BOOL)useTransaction; - (void)jr_saveUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete; - (BOOL)jr_save; - (void)jr_saveWithComplete:(JRDBComplete _Nullable)complete; #pragma mark - update /** * 仅更新自身,不进行关联保存(不建议使用) * * @param db * @param columns 要更新的字段 */ - (BOOL)jr_updateOnlyColumns:(NSArray<NSString *> * _Nullable)columns toDB:(FMDatabase * _Nonnull)db; /** * 更新自身到db, 并进行关联保存删除更新 * * @param db * @param columns 要更新的字段 * @param useTransaction 若外层有事务,请用NO,若没有,请用YES */ - (BOOL)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns useTransaction:(BOOL)useTransaction toDB:(FMDatabase * _Nonnull)db; - (void)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns useTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; - (BOOL)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns toDB:(FMDatabase * _Nonnull)db; - (void)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns complete:(JRDBComplete _Nullable)complete toDB:(FMDatabase * _Nonnull)db; #pragma mark - update use DefaultDB /** * 仅更新自身,不进行关联保存(不建议使用) * * @param columns 要更新的字段 */ - (BOOL)jr_updateOnlyColumns:(NSArray<NSString *> * _Nullable)columns; /** * 更新自身到db, 并进行关联保存删除更新 * * @param columns 要更新的字段 * @param useTransaction 若外层有事务,请用NO,若没有,请用YES * @complete 完成block */ - (BOOL)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns useTransaction:(BOOL)useTransaction; - (void)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns useTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete; - (BOOL)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns; - (void)jr_updateColumns:(NSArray<NSString *> * _Nullable)columns complete:(JRDBComplete _Nullable)complete; #pragma mark - delete + (BOOL)jr_deleteAllOnlyFromDB:(FMDatabase * _Nonnull)db; /** * 仅删除自身,不进行关联保存(不建议使用) * * @param db */ - (BOOL)jr_deleteOnlyFromDB:(FMDatabase * _Nonnull)db; /** * 删除自身, 并进行关联保存删除更新 * * @param db * @param useTransaction 若外层有事务,请用NO,若没有,请用YES */ - (BOOL)jr_deleteUseTransaction:(BOOL)useTransaction fromDB:(FMDatabase * _Nonnull)db; - (void)jr_deleteUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete fromDB:(FMDatabase * _Nonnull)db; - (BOOL)jr_deleteFromDB:(FMDatabase * _Nonnull)db; - (void)jr_deleteWithComplete:(JRDBComplete _Nullable)complete fromDB:(FMDatabase * _Nonnull)db; #pragma mark - delete use DefaultDB + (BOOL)jr_deleteAllOnly; /** * 仅删除自身,不进行关联保存(不建议使用) */ - (BOOL)jr_deleteOnly; /** * 删除自身, 并进行关联保存删除更新 * * @param useTransaction 若外层有事务,请用NO,若没有,请用YES */ - (BOOL)jr_deleteUseTransaction:(BOOL)useTransaction; - (void)jr_deleteUseTransaction:(BOOL)useTransaction complete:(JRDBComplete _Nullable)complete; - (BOOL)jr_delete; - (void)jr_deleteWithComplete:(JRDBComplete _Nullable)complete; #pragma mark - select /** * 根据ID查找 * * @param ID */ + (instancetype _Nullable)jr_findByID:(NSString * _Nonnull)ID; + (instancetype _Nullable)jr_findByID:(NSString * _Nonnull)ID fromDB:(FMDatabase * _Nonnull)db; /** * 根据主键查找 * @param primaryKey 主键 */ + (instancetype _Nullable)jr_findByPrimaryKey:(id _Nonnull)primaryKey; + (instancetype _Nullable)jr_findByPrimaryKey:(id _Nonnull)primaryKey fromDB:(FMDatabase * _Nonnull)db; /** * @OrderBy 顺序 订单 * @isDesc 描述 * */ + (NSArray<id<JRPersistent>> * _Nonnull)jr_findAll; + (NSArray<id<JRPersistent>> * _Nonnull)jr_findAllFromDB:(FMDatabase * _Nonnull)db; + (NSArray<id<JRPersistent>> * _Nonnull)jr_findAllOrderBy:(NSString * _Nullable)orderBy isDesc:(BOOL)isDesc; //降序返回 + (NSArray<id<JRPersistent>> * _Nonnull)jr_findAllFromDB:(FMDatabase * _Nonnull)db orderBy:(NSString * _Nullable)orderBy isDesc:(BOOL)isDesc; /** * @param conditions 查找条件 * @param groupBy 组 * @param orderBy 顺序 * @param limit 限制 * @param isDesc 描述 * @param db */ + (NSArray<id<JRPersistent>> * _Nonnull)jr_findByConditions:(NSArray<JRQueryCondition *> * _Nullable)conditions groupBy:(NSString * _Nullable)groupBy orderBy:(NSString * _Nullable)orderBy limit:(NSString * _Nullable)limit isDesc:(BOOL)isDesc fromDB:(FMDatabase * _Nullable)db; + (NSArray<id<JRPersistent>> * _Nonnull)jr_findByConditions:(NSArray<JRQueryCondition *> * _Nullable)conditions groupBy:(NSString * _Nullable)groupBy orderBy:(NSString * _Nullable)orderBy limit:(NSString * _Nullable)limit isDesc:(BOOL)isDesc; #pragma mark - table message /** * 数据库中的当前列 获取表格字段 * * @param db * */ + (NSArray<NSString *> * _Nonnull)jr_currentColumnsInDB:(FMDatabase * _Nonnull)db; + (NSArray<NSString *> * _Nonnull)jr_currentColumns; //=============================重点================================== #pragma mark - sql语句 /** * 因为直接返回对象,所以sql 请以 select * 开头 * * @param sql sql: select * from Person where _ID = ? * @param args 参数 @[@'111'] * * @return 返回数组 */ + (NSArray<id<JRPersistent>> * _Nonnull)jr_executeSql:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args; + (NSArray<id<JRPersistent>> * _Nonnull)jr_executeSql:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args fromDB:(FMDatabase * _Nonnull)db; /** * 返回条数 * * @param sql select count(1) where age > ? * @param args @[@10] * * @return 数据条数 */ + (NSUInteger)jr_countForSql:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args; + (NSUInteger)jr_countForSql:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args fromDB:(FMDatabase * _Nonnull)db; + (BOOL)jr_executeUpdate:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args; + (BOOL)jr_executeUpdate:(NSString * _Nonnull)sql args:(NSArray * _Nullable)args fromDB:(FMDatabase * _Nonnull)db; #pragma mark - table operation + (BOOL)jr_createTable; + (BOOL)jr_createTableInDB:(FMDatabase * _Nonnull)db; + (BOOL)jr_updateTable; + (BOOL)jr_updateTableInDB:(FMDatabase * _Nonnull)db; + (BOOL)jr_dropTable; + (BOOL)jr_dropTableInDB:(FMDatabase * _Nonnull)db; + (BOOL)jr_truncateTable; + (BOOL)jr_truncateTableInDB:(FMDatabase * _Nonnull)db; #pragma mark - hooking + (void)jr_swizzleSetters4Clazz; - (NSMutableArray * _Nullable)jr_changedArray; @end

4 后面是实践的一些小模块

常用的两个保存方式

[p1 jr_saveWithComplete:^(BOOL success) { [p jr_save];//保存成功再调用 }];

常用的查找方式

Person *p = [Person jr_findAll].firstObject; //主键查找 Person *p = [Person jr_findByPrimaryKey:@'111']; NSArray *list = [Person jr_findAll]; // 根据字段 排序 获取数据 获取的数据为降序排布 NSArray *list1 = [Person jr_findAllOrderBy:@'_a_int' isDesc:YES]; // sql 语句查询 这里 age 为你需要设置的条件的值 ?占位符 NSString *sql = @'select * from Person where _a_int > ?'; NSArray *list = [Person jr_executeSql:sql args:@[@4]]; // 获取表格字段 全部信息 NSArray * currentarray = [Person jr_currentColumns];

常用的跟新的方法

1 Person *p = [Person jr_findAll].firstObject; p.name = @'我跟新了name'; [p jr_updateColumns:nil]; 2 // 需要更新的字段 只更新表里_name 字段 for (Person * tmp in array) { i++; if (tmp.name.length >0) { tmp.name = [NSString stringWithFormat:@'我勒个去啊name%ld',i]; tmp.i_string = [NSString stringWithFormat:@'我勒个去i_string%ld',i]; [tmp jr_updateColumns:@[@'_name'] toDB:db]; } } //更新表里_a_int _i_string 字段 注意需要加上_ int i =0; NSArray * array = [Person jr_findAll]; for (Person * tmp in array) { i++; tmp.name = @'iOS'; tmp.i_string = @'我爱你'; tmp.a_int = i; } NSLog(@'%@', array); [array jr_updateColumns:@[@'_a_int',@'_i_string'] complete:^(BOOL success) { NSLog(@'真的执行正确了加油 加油'); } toDB:db];

常用的表格删除方法

[Person jr_dropTable]; [HelpListModel jr_dropTable]; [Money jr_dropTable]; [Card jr_dropTable]; [JRFMDBBookModel jr_dropTable]; [Modeltest jr_dropTable];

写的有点乱 后续整理后 再更新 。。。。。。。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/sqlite/10596.shtml

相关文章

风云图片

推荐阅读

返回sqlite频道首页